/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.chain.programa;

import br.com.Abstracts.AbstractTratadorLexicoToken;
import br.com.Erros.TratadorErros;
import br.com.Instrucoes.TratadorInstrucoes;
import br.com.chain.declaracoes.TratadorDeclaracoes;
import br.com.chain.delimitadores.TratadorDelimitadores;
import br.com.chain.id.Id;
import br.com.chain.operadoresAritimeticos.TratadorOperadoresAritimeticos;
import br.com.chain.operadoresAtribuicao.TratadorOperadoresAtribuicao;
import br.com.chain.operadoresComparacao.TratadorOperadoresComparacao;
import br.com.chain.operadoresLogicos.TratadorOperadoresLogicos;
import br.com.chain.tipos.TratadorTipos;
import br.com.model.Token;

/**
 *
 * @author Bush
 */
public class TratadorProgram extends AbstractTratadorLexicoToken {
    @Override
    public void isValido(Token token) {
        this.setProximoConjunto(new TratadorInstrucoes());
        this.setProximoConjunto(new TratadorDelimitadores());
        this.setProximoConjunto(new TratadorTipos());
        this.setProximoConjunto(new TratadorOperadoresAritimeticos());
        this.setProximoConjunto(new TratadorOperadoresAtribuicao());
        this.setProximoConjunto(new TratadorOperadoresComparacao());
        this.setProximoConjunto(new TratadorOperadoresLogicos());
        this.setProximoConjunto(new TratadorDeclaracoes());
        //this.setProximoConjunto(new TratadorId());
        //this.setProximoConjunto(new Erros());
        if (token.getLexema().toLowerCase().equals("program")) {
            token.setToken("Programa");
        } else if (this.sucessor != null) {
            this.sucessor.isValido(token);
        }
    }
}
